import ApiClient from '@/api/apiClient';

import type { RequestBody } from 'alova';

/**
 * ProjectInfo对象，项目表
 */
export interface ProjectInfo {
  /**
   * 地址
   */
  address?: string;
  /**
   * 授权码
   */
  authorizationCode?: string;
  /**
   * 创建人
   */
  createBy?: string;
  /**
   * 创建人id
   */
  createId?: number;
  /**
   * 创建时间
   */
  createTime?: string;
  /**
   * 关联的设备ID 多个使用,分割
   */
  deviceIds?: string;
  /**
   * 主键
   */
  id?: number;
  /**
   * 是否逻辑删除，0否,其他是
   */
  isDelete?: number;
  /**
   * 项目名
   */
  name?: string;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 修改人
   */
  updateBy?: string;
  /**
   * 修改人id
   */
  updateId?: number;
  /**
   * 更新时间
   */
  updateTime?: string;
  /**
   * 乐观锁版本号
   */
  version?: number;
  [property: string]: any;
}

/**
 * 项目详情返回实体
 */
export interface ProjectDetail {
  /**
   * 地址
   */
  address?: string;
  /**
   * 授权码
   */
  authorizationCode?: string;
  /**
   * 关联的设备ID 多个使用,分割
   */
  deviceIds?: string;
  /**
   * 绑定的设备详情
   */
  devices?: SysDeviceInfo[];
  /**
   * 主键ID
   */
  id?: number;
  /**
   * 项目名
   */
  name?: string;
  /**
   * 备注
   */
  remark?: string;
  [property: string]: any;
}

/**
 * SysDeviceInfo对象，设备信息表
 */
export interface SysDeviceInfo {
  /**
   * 激活时间
   */
  activationTime?: string;
  /**
   * 位置信息
   */
  address?: string;
  /**
   * code 自动生成 业务唯一
   */
  code?: string;
  /**
   * 创建人
   */
  createBy?: string;
  /**
   * 创建人id
   */
  createId?: number;
  /**
   * 创建时间
   */
  createTime?: string;
  /**
   * 数采推送接口
   */
  dataPushUrl?: string;
  /**
   * 设备名称
   */
  deviceName?: string;
  /**
   * 关联的网关设备编码
   */
  gatewayCode?: string;
  /**
   * 关联的网关产品编码
   */
  gatewayPk?: string;
  /**
   * 设备分组id sys_device_group主键
   */
  groupId?: number;
  /**
   * 主键
   */
  id?: number;
  /**
   * 设备上传的imei号
   */
  imei?: string;
  /**
   * ip地址
   */
  ipAddress?: string;
  /**
   * 是否逻辑删除，0否,其他是
   */
  isDelete?: number;
  /**
   * 设备key 自动生成 业务唯一
   */
  keyInfo?: string;
  /**
   * 最近在线时间
   */
  latestOnlineTime?: string;
  /**
   * 纬度
   */
  latitude?: number;
  /**
   * 绑定的位置ID
   */
  locationId?: number;
  /**
   * 经度
   */
  longitude?: number;
  /**
   * 父设备id
   */
  parentId?: number;
  /**
   * 所属产品code
   */
  productCode?: string;
  /**
   * 描述
   */
  remark?: string;
  /**
   * 0自主创建 1自动创建
   */
  source?: number;
  /**
   * 0未激活 1在线 2离线3未知
   */
  status?: number;
  /**
   * 修改人
   */
  updateBy?: string;
  /**
   * 修改人id
   */
  updateId?: number;
  /**
   * 更新时间
   */
  updateTime?: Date;
  /**
   * 乐观锁版本号
   */
  version?: number;
  [property: string]: any;
}

/** 项目列表 */
export const deviceProjectListApi = (data: RequestBody) => {
  return ApiClient.Post<API.ListType<ProjectInfo>>('/manager/bizProjectInfo/page', data, {
    meta: { auth: true },
  });
};
/** 删除项目 */
export const deviceProjectDeleteApi = (data: Merge<RequestBody, { id: string }>) => {
  return ApiClient.Get(`/manager/bizProjectInfo/del/${data.id}`, {
    meta: { auth: true },
  });
};

/** 保存更新项目 */
export const deviceProjectAddApi = (data: RequestBody) => {
  return ApiClient.Post(`/manager/bizProjectInfo/saveOrUpdate`, data, {
    meta: { auth: true },
  });
};

/** 获取详情 */
export const deviceProjectDetailApi = (data: { id: number }) => {
  return ApiClient.Get<ProjectDetail>(`/manager/bizProjectInfo/details/${data.id}`, {
    meta: { auth: true },
  });
};
